home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 23
/
Aminet 23 (1998)(GTI - Schatztruhe)[!][Feb 1998].iso
/
Aminet
/
disk
/
misc
/
MacTransfEr.lha
/
MacTransfEr
/
MacTransfEr.e
< prev
next >
Wrap
Text File
|
1997-09-18
|
3KB
|
96 lines
/* MacTransfEr - Kleines Tool, um die Dateinamen mit Hilfe der Information aus FINDER.DAT (dazu muß die Diskette
natürlich auf einem Mac beschrieben worden sein) wieder zu vervollständigen. Gibbet glaube ich noch gar nicht, eine
echte Premiere :)
Written in E³
r@((e 97
FINDER.DAT-Offsets:
276 - 1. Datei
80 - Abstand Mac-Dateiname -> MS-DOS-Dateiname
92/144 - Abstand der Dateinamen
*/
OPT OSVERSION=37
MODULE 'dos/dos','reqtools','libraries/reqtools'
ENUM CD=0,DF
DEF ver,filereq:PTR TO rtfilerequester,filename[108]:STRING,lock=0,oldlock,
fh,fib:PTR TO fileinfoblock,finder:PTR TO CHAR,finder2,macfilename[256]:STRING,msdooffilename[12]:STRING,
test,foundpos,counter1=0,counter2=0,rdargs,clargs[2]:ARRAY OF LONG,cd,df
PROC main()
ver:='$VER: MacTransfEr 1.0 (18.9.97) by r@((e'
filereq:=0
reqtoolsbase:=0
fh:=0
clargs:=[NIL,NIL]
WriteF('\s\n',ver+6)
IF (rdargs:=ReadArgs('CD=CURRENTDIR/S,DF=DELETEFINDERDAT/S',clargs,NIL))
cd:=clargs[CD]
df:=clargs[DF]
FreeArgs(rdargs)
ENDIF
IF cd THEN BRA noreq
IF reqtoolsbase:=OpenLibrary('reqtools.library',38)
NEW filereq
IF filereq:=RtAllocRequestA(RT_FILEREQ,NIL)
IF RtFileRequestA(filereq,filename,'Please choose a directory',[RTFI_FLAGS,FREQF_NOFILES,0])
IF (lock:=Lock(filereq.dir,ACCESS_READ))
oldlock:=CurrentDir(lock)
noreq:
WriteF('\nMacTransfEr log:\n\n')
IF (fh:=Open('FINDER.DAT',MODE_OLDFILE))
NEW fib
IF ExamineFH(fh,fib)
NEW finder[fib.size]
IF (fib.size=Read(fh,finder,fib.size))
finder2:=finder+276
REPEAT
StrCopy(macfilename,finder2+1,Char(finder2))
StrCopy(msdooffilename,finder2+80,8)
IF (foundpos:=InStr(msdooffilename,' ',0))<>-1 THEN SetStr(msdooffilename,foundpos)
IF (Char(finder2+8))<>0
StrAdd(msdooffilename,'.',1)
StrAdd(msdooffilename,finder2+88,3)
IF (foundpos:=InStr(msdooffilename,' ',8))<>-1 THEN SetStr(msdooffilename,foundpos)
ENDIF
IF Rename(msdooffilename,macfilename)
counter1++
WriteF('\s -> \s\n',msdooffilename,macfilename)
ELSE
WriteF('** Could not rename \s to \s **\n',msdooffilename,macfilename)
ENDIF
counter2++
test:=(finder2-finder)-$70
IF Odd(test/$100) AND (Mod(test,$100) = 0)
finder2:=finder2+144
ELSE
finder2:=finder2+92
ENDIF
UNTIL finder2 >= (finder+fib.size)
WriteF('\nRenamed \d of \d files in FINDER.DAT.\n',counter1,counter2)
ENDIF
ENDIF
Close(fh)
IF df THEN IF DeleteFile('FINDER.DAT') THEN WriteF('\nDeleted FINDER.DAT.\n') ELSE WriteF('\n** Could not delete FINDER.DAT **\n')
ENDIF
IF fh = 0 THEN WriteF('** Could not open FINDER.DAT for reading **\n')
IF lock
CurrentDir(oldlock)
UnLock(lock)
ENDIF
ENDIF
ENDIF
IF filereq THEN RtFreeRequest(filereq)
ENDIF
IF reqtoolsbase THEN CloseLibrary(reqtoolsbase)
ENDIF
ENDPROC